#ifndef INCLUDE_SENSEID_IDS_API_H_
#define INCLUDE_SENSEID_IDS_API_H_

#include "senseid_ids_api_define.h"
#include "senseid_ids_error.h"

typedef void* senseid_handle;

///
/// 更新消息回调
///
typedef void senseid_ids_callback_on_update(SENSEID_IDS_ERROR err_code, const senseid_message_t message);

///
/// 流程完成/中断回调
///
typedef void senseid_ids_callback_on_complete(SENSEID_IDS_ERROR err_code, const char* err_msg);

///
/// @brief SDK 版本信息
///
SENSEID_IDS_PUBLIC
const char* senseid_ids_version(void);

///
/// @brief 初始化
/// @param[in] label_id 检测对象 ID
/// @param[in] access_token 鉴权信息
/// @param[in] uuid UUID
/// @param[out] handle 返回句柄
///
SENSEID_IDS_PUBLIC
SENSEID_IDS_ERROR senseid_ids_initialize(const senseid_label_id_e label_id, const char* access_token, const char* uuid,
                                   senseid_ids_callback_on_update on_update, senseid_ids_callback_on_complete on_complete,
                                   senseid_handle* handle);

///
/// @brief 输入检测图像数据
/// @param[in] handle 句柄
/// @param[in] frame 图像数据
///
SENSEID_IDS_PUBLIC
SENSEID_IDS_ERROR senseid_ids_input(const senseid_handle handle, const senseid_frame_t frame);

///
/// @brief 释放
/// @param[in] handle 句柄
///
SENSEID_IDS_PUBLIC
SENSEID_IDS_ERROR senseid_ids_release(senseid_handle handle);

#endif  // INCLUDE_SENSEID_IDS_API_H_
